package com.zut.Pojo.problem;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * (Problem)表实体类
 *
 * @author makejava
 * @since 2023-11-05 22:08:53
 */
@SuppressWarnings("serial")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("problem")
public class Problem{
    
    private Long id;
    //问题的自定义ID 例如（HOJ-1000）
    private String problemId;
    //题目
    private String title;
    //作者
    private String author;
    //0为ACM,1为OI
    private Integer type;
    //单位ms
    private Integer timeLimit;
    //单位kb
    private Integer memoryLimit;
    //单位mb
    private Integer stackLimit;
    //描述
    private String description;
    //输入描述
    private String input;
    //输出描述
    private String output;
    //题面样例
    private String examples;
    //是否为vj判题
    private Integer isRemote;
    //题目来源
    private String source;
    //题目难度,0简单，1中等，2困难
    private Integer difficulty;
    //备注,提醒
    private String hint;
    //默认为1公开，2为私有，3为比赛题目
    private Integer auth;
    //当该题目为io题目时的分数
    private Integer ioScore;
    //该题目对应的相关提交代码，用户是否可用分享
    private Integer codeShare;
    //题目评测模式,default、spj、interactive
    private String judgeMode;
    //题目样例评测模式,default,subtask_lowest,subtask_average
    private String judgeCaseMode;
    //题目评测时用户程序的额外文件 json key:name value:content
    private String userExtraFile;
    //题目评测时交互或特殊程序的额外文件 json key:name value:content
    private String judgeExtraFile;
    //特判程序或交互程序代码
    private String spjCode;
    //特判程序或交互程序代码的语言
    private String spjLanguage;
    //是否默认去除用户代码的文末空格
    private Integer isRemoveEndBlank;
    //是否默认开启该题目的测试样例结果查看
    private Integer openCaseResult;
    //题目测试数据是否是上传文件的
    private Integer isUploadCase;
    //题目测试数据的版本号
    private String caseVersion;
    //修改题目的管理员用户名
    private String modifiedUser;
    
    private Integer isGroup;
    
    private Long gid;
    //申请公开的进度：null为未申请，1为申请中，2为申请通过，3为申请拒绝
    private Integer applyPublicProgress;
    //是否是file io自定义输入输出文件模式
    private Integer isFileIo;
    //题目指定的file io输入文件的名称
    private String ioReadFileName;
    //题目指定的file io输出文件的名称
    private String ioWriteFileName;
    
    private Date gmtCreate;
    
    private Date gmtModified;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getProblemId() {
        return problemId;
    }

    public void setProblemId(String problemId) {
        this.problemId = problemId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getTimeLimit() {
        return timeLimit;
    }

    public void setTimeLimit(Integer timeLimit) {
        this.timeLimit = timeLimit;
    }

    public Integer getMemoryLimit() {
        return memoryLimit;
    }

    public void setMemoryLimit(Integer memoryLimit) {
        this.memoryLimit = memoryLimit;
    }

    public Integer getStackLimit() {
        return stackLimit;
    }

    public void setStackLimit(Integer stackLimit) {
        this.stackLimit = stackLimit;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getInput() {
        return input;
    }

    public void setInput(String input) {
        this.input = input;
    }

    public String getOutput() {
        return output;
    }

    public void setOutput(String output) {
        this.output = output;
    }

    public String getExamples() {
        return examples;
    }

    public void setExamples(String examples) {
        this.examples = examples;
    }

    public Integer getIsRemote() {
        return isRemote;
    }

    public void setIsRemote(Integer isRemote) {
        this.isRemote = isRemote;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public Integer getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(Integer difficulty) {
        this.difficulty = difficulty;
    }

    public String getHint() {
        return hint;
    }

    public void setHint(String hint) {
        this.hint = hint;
    }

    public Integer getAuth() {
        return auth;
    }

    public void setAuth(Integer auth) {
        this.auth = auth;
    }

    public Integer getIoScore() {
        return ioScore;
    }

    public void setIoScore(Integer ioScore) {
        this.ioScore = ioScore;
    }

    public Integer getCodeShare() {
        return codeShare;
    }

    public void setCodeShare(Integer codeShare) {
        this.codeShare = codeShare;
    }

    public String getJudgeMode() {
        return judgeMode;
    }

    public void setJudgeMode(String judgeMode) {
        this.judgeMode = judgeMode;
    }

    public String getJudgeCaseMode() {
        return judgeCaseMode;
    }

    public void setJudgeCaseMode(String judgeCaseMode) {
        this.judgeCaseMode = judgeCaseMode;
    }

    public String getUserExtraFile() {
        return userExtraFile;
    }

    public void setUserExtraFile(String userExtraFile) {
        this.userExtraFile = userExtraFile;
    }

    public String getJudgeExtraFile() {
        return judgeExtraFile;
    }

    public void setJudgeExtraFile(String judgeExtraFile) {
        this.judgeExtraFile = judgeExtraFile;
    }

    public String getSpjCode() {
        return spjCode;
    }

    public void setSpjCode(String spjCode) {
        this.spjCode = spjCode;
    }

    public String getSpjLanguage() {
        return spjLanguage;
    }

    public void setSpjLanguage(String spjLanguage) {
        this.spjLanguage = spjLanguage;
    }

    public Integer getIsRemoveEndBlank() {
        return isRemoveEndBlank;
    }

    public void setIsRemoveEndBlank(Integer isRemoveEndBlank) {
        this.isRemoveEndBlank = isRemoveEndBlank;
    }

    public Integer getOpenCaseResult() {
        return openCaseResult;
    }

    public void setOpenCaseResult(Integer openCaseResult) {
        this.openCaseResult = openCaseResult;
    }

    public Integer getIsUploadCase() {
        return isUploadCase;
    }

    public void setIsUploadCase(Integer isUploadCase) {
        this.isUploadCase = isUploadCase;
    }

    public String getCaseVersion() {
        return caseVersion;
    }

    public void setCaseVersion(String caseVersion) {
        this.caseVersion = caseVersion;
    }

    public String getModifiedUser() {
        return modifiedUser;
    }

    public void setModifiedUser(String modifiedUser) {
        this.modifiedUser = modifiedUser;
    }

    public Integer getIsGroup() {
        return isGroup;
    }

    public void setIsGroup(Integer isGroup) {
        this.isGroup = isGroup;
    }

    public Long getGid() {
        return gid;
    }

    public void setGid(Long gid) {
        this.gid = gid;
    }

    public Integer getApplyPublicProgress() {
        return applyPublicProgress;
    }

    public void setApplyPublicProgress(Integer applyPublicProgress) {
        this.applyPublicProgress = applyPublicProgress;
    }

    public Integer getIsFileIo() {
        return isFileIo;
    }

    public void setIsFileIo(Integer isFileIo) {
        this.isFileIo = isFileIo;
    }

    public String getIoReadFileName() {
        return ioReadFileName;
    }

    public void setIoReadFileName(String ioReadFileName) {
        this.ioReadFileName = ioReadFileName;
    }

    public String getIoWriteFileName() {
        return ioWriteFileName;
    }

    public void setIoWriteFileName(String ioWriteFileName) {
        this.ioWriteFileName = ioWriteFileName;
    }

    public Date getGmtCreate() {
        return gmtCreate;
    }

    public void setGmtCreate(Date gmtCreate) {
        this.gmtCreate = gmtCreate;
    }

    public Date getGmtModified() {
        return gmtModified;
    }

    public void setGmtModified(Date gmtModified) {
        this.gmtModified = gmtModified;
    }

}

